1. Field of Invention
The present invention relates generally to software applications and, more particularly, to methods and apparatus for optimizing the execution of software applications having a byte code format.
2. Description of Related Art
The use of computer systems which share resources across a network of computer systems, e.g., local area networks, intranets and the internet, is increasing. Accordingly, software applications, or computer programs, may be delivered in different formats to different computer systems, due to the fact that a particular computer system generally requires software applications to be in a format that is specific to that particular computer system. Alternatively, the computer programs may be delivered to a computer system in a machine-independent form, i.e., as byte codes, in order to enable one form of a computer program to be utilized by many different computer systems.
Computer systems which receive byte codes generally include compilers which are used to compile byte codes at run-time. Compiling byte codes at run-time entails translating the byte codes into machine code. FIG. 1 is a block diagram representation of a computer system with a byte code compiler. Byte codes 104, which may be arranged as a computer program, are delivered, or otherwise provided, to a computer system 105.
Byte codes 104 may generally be provided by a variety of different sources. For example, byte codes 104 may be within downloadable applets that are associated and executed with a particular web page. When byte codes 104, are executed, byte codes 104 are compiled using a compiler 106 at run-time. Compiled code 108, which is produced by compiler 106, is generally machine-dependent code that is specific to, and may be executed within, computer system 105. That is, compiler 106 translates byte codes 104 into compiled code 108 at run-time.
The byte codes may generate graphical user interface (GUI) components, which allow the user to interact through a mouse input device, for example. Although these GUI components function adequately within systems that include mouse input devices, they may function improperly within systems that do not include mouse input devices. For example, a television system that provides access to the world wide web is not likely to include a mouse device.
FIG. 2 represents a television system 200 that may be used to access the world wide web. Typically, a set top box 203 provides an interface between a televisions set 205 and network signals 204. The set top box 203 also typically receives input from a remote device 207 (e.g., a remote keyboard 207a or a remote control 207b) for selecting a web location. The set top box 203 then contacts the selected web location and displays the content from the selected web location on the television screen 205.
If the web page has embedded applets, the set top box 203 will download the applets on the television 205. Applets are generally in the form of computer programs that are downloaded from a remote server and executed by the local client (e.g., the set top box 203). Some applets are designed for mouse interaction. For example, a particular region within the applet may require mouse input, whereas other regions within the applet may not require mouse input. Applets that require mouse input thus present certain difficulties when they are downloaded into a mouseless system. As such, a mouse based applet will likely not function properly within the above described web television system 200.
Therefore, what is needed is a method for dynamically determining whether a particular computer program contains mechanisms for handling mouse events, to thereby ensure reliable mouse event handling for the computer program.
Broadly speaking, the present invention provides apparatus and methods for determining whether a byte code formatted computer program handles pointer device events. The invention is useful for systems that access and execute byte code formatted programs but do not include a pointer device, such as a mouse device. When it is determined that a particular computer program handles pointer device events, the systems without pointer devices are able to simulate mouse events (e.g., through the arrow keys of a keyboard or remote control) for the particular computer program.
In one embodiment, the invention pertains to a computer readable medium containing computer codes for examining byte codes. The computer readable medium includes computer code for examining a byte code to determine whether the byte code is arranged to process a pointer device event, and computer code that associates a tag with the examined byte code if it is determined that the examined byte code is arranged to process a pointer device event. In one implementation, the byte codes that handle pointer device events may include code that represents a position of a pointer device or code that compares an event identifier to a pointer device event.
In an alternative embodiment the invention pertains to a computer readable medium that includes computer code computer code for examining a plurality of byte codes of a GUI component to determine whether the GUI component is associated with a pointer device event, and computer code for associating with the GUI component a tag that indicates that the GUI component responds to pointer device events if it is determined that the GUI component is associated with a pointer device event.
In one implementation, the byte codes of the GUI components are examined by examining one or more class files associated with the GUI component. In another implementation, the byte codes of the GUI component are examined for handling event code that processes pointer device events. The handling event code is, for example, arranged to compare a value of an event identifier to a representation of a known value of a pointer device event.
In still another embodiment, the invention pertains to a method for examining byte codes. A byte code is examined to determine whether the byte code is arranged to process a pointer device event. If it is determined that the examined byte code is arranged to process a pointer device event, a tag is associated with the examined byte code.
In another embodiment, the invention pertains to a method for examining a computer program having byte codes. A plurality of byte codes of a GUI component are examined to determine whether the GUI component is associated with a pointer device event. If it is determined that the GUI component is associated with a pointer device event, a tag is associated with the GUI component. The tag indicates that the GUI component responds to pointer device events.
In yet another embodiment, the invention pertains to an interactive television system arranged to receive computer programs. The interactive television system includes a processing unit arranged to receive a computer program having a plurality of byte codes for creating a graphical user interface (GUI) component, to examine the byte codes of the received computer program to determine whether a selected one of the byte codes is arranged to process a pointer device event, and to associate a tag with the selected byte code if the selected byte code is arranged to process a pointer device event; an input device arranged to transmit input events to the processing unit; and a display device arranged to display the GUI component created by the computer program.